//
//  TKAnalysisSDK.h
//  TKAnalysisSDK
//  
//  Created by wyl on 2018/1/8.
//  Copyright © 2018年 TaiKang. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
//! Project version number for TKAnalysisSDK.
FOUNDATION_EXPORT double TKAnalysisSDKVersionNumber;

//! Project version string for TKAnalysisSDK.
FOUNDATION_EXPORT const unsigned char TKAnalysisSDKVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <TKAnalysisSDK/PublicHeader.h>
typedef NS_ENUM(NSInteger, TKAnalysisSDKType) {
    /**生产环境环境*/
    TKAnalysisSDKTypeProduct,
    /**测试环境*/
    TKAnalysisSDKTypeTest
};
@interface TKAnalysisSDK : NSObject
/**
 *  @method    sessionStartedWithEnvironmentType:
 *  初始化统计实例，请在application:didFinishLaunchingWithOptions:方法里调用
 *  @param  environmentType     环境类型。区分生产环境和测试环境
 */
+ (void)sessionStartedWithEnvironmentType:(TKAnalysisSDKType)environmentType;
/**
 *  @method    sessionStartedWithEnvironmentType:
 *  初始化统计实例，请在application:didFinishLaunchingWithOptions:方法里调用
 *  @param  environmentType     环境类型。区分生产环境和测试环境
 *  @param  accesskey     注册码，用于统计区分
 */
+ (void)sessionStartedWithEnvironmentType:(TKAnalysisSDKType)environmentType accesskey:(NSString *)accesskey;

/**
 *  @method    sessionStarted:withChannelId:
 *  初始化统计实例，请在application:didFinishLaunchingWithOptions:方法里调用
 *  @param  appKey      应用的唯一标识，统计后台注册得到
 *  @param  channelId   渠道名，如“app store”（可选）
 */
+ (void)sessionStarted:(NSString *)appKey withChannelId:(NSString *)channelId;
/**
 *  @method trackEvent
 *  统计自定义事件（可选），如购买动作
 *  @param  event     事件名称（自定义）
 */
+ (void)trackEvent:(NSString *)event;

/**
 *  @method trackEvent:label:
 *  统计带标签的自定义事件（可选），可用标签来区别同一个事件的不同应用场景
 如购买某一特定的商品
 *  @param  event     事件名称（自定义）
 *  @param  eventLabel  事件标签（自定义）
 */
+ (void)trackEvent:(NSString *)event label:(NSString *)eventLabel;

/**
 *  @method    trackEvent:label:parameters
 *  统计带二级参数的自定义事件，单次调用的参数数量不能超过10个
 *  @param  event     事件名称（自定义）
 *  @param  eventLabel  事件标签（自定义）
 *  @param  parameters  事件参数 (key只支持NSString, value支持NSString和NSNumber)
 */
+ (void)trackEvent:(NSString *)event
             label:(NSString *)eventLabel
        parameters:(NSDictionary *)parameters;


/**
 *  @method    trackPageBegin
 *  开始跟踪某一页面（可选），记录页面打开时间
 建议在viewWillAppear或者viewDidAppear方法里调用
 *  @param  pageName    页面名称（自定义）
 */
+ (void)trackPageBegin:(NSString *)pageName;

/**
 *  @method trackPageEnd
 *  结束某一页面的跟踪（可选），记录页面的关闭时间
 此方法与trackPageBegin方法结对使用，
 在iOS应用中建议在viewWillDisappear或者viewDidDisappear方法里调用
 在Watch应用中建议在DidDeactivate方法里调用
 *  @param  pageName    页面名称，请跟trackPageBegin方法的页面名称保持一致
 */
+ (void)trackPageEnd:(NSString *)pageName;

/**
 *  @method    isTrackOpend
 *  是否打开SDK功能（默认打开）
 *  @param  isOpened 是否打开
 */
+ (void)isTrackOpend:(BOOL)isOpened;

/**
 *  @method    changeUploadUrl
 *  切换url
 *  @param  changeUrl 切换路径
 */
+ (void)changeUploadUrl:(NSString *)changeUrl;
/**
 *  @method    changeUploadUrl
 *  切换上传环境
 *  @param  environment 切换环境
 */
+ (void)changeUploadEnvironment:(TKAnalysisSDKType)environment;

@end
